使用消息

消息系统提供一种通知事件和交换信息的方法。

消息和参数

MessageArguments 是在消息中传递的参数的基类。Kanzi 为不同的节点和触发器提供内置消息类型。例如,ButtonConcept::ClickedMessageArguments 消息用于按钮: 点击 (Button:Click) 触发器, Page::ActivatedMessageArguments 消息用于页面已激活 (Page Activated) 触发器。

您可以写入自己的消息类型来扩展MessageArguments 类。

消息类型描述:

您可以使用 PropertyType 对象来描述和访问消息参数。 MessageArguments::setArgument 函数集和 MessageArguments::getArgument 函数通过参数底层存储类型检索参数,如 float、Boolean、Vector3 等。

分派消息

要将消息分派给处理程序,使用 Node::dispatchMessage。该函数定义消息类型和参数,并调用为该消息类型的节点注册的所有处理程序。

Node::dispatchMessage 在函数调用返回之前立即通知处理程序,使处理程序能够立即对消息作出反应。

接收消息

Kanzi 中的所有消息都是路由消息。当派发消息时,系统在隧道进程中从根节点经过达到消息目标,然后在冒泡进程中返回。在场景图中每个通过的节点处,系统寻找已派发消息的处理程序。这样您可以将处理程序安装在有效拦截消息的图形中任何位置,然后才能达到目的或从多个来源收集消息。

在冒泡阶段处理消息,在隧道阶段拦截或过滤消息。

接收程序作为函数实现,并作为指针传递到 Node::addMessageHandler()kzuMessageDispatcherAddTunnellingHandler()。要为接收程序的实现提供环境,注册时向用户数据提供指针。使用 Node::removeMessageHandler() 移除处理程序。

计时器

消息系统带有内置计时器消息支持,可使用 KzuMessageDispatcher 访问。kzuMessageDispatcherAddTimerHandler() 订阅计时器,而 kzuMessageDispatcherRemoveTimerHandler() 取消订阅计时器。订阅期间,设置计时器间隔和计时器行为:

Kanzi Studio 中创建自定义消息

要在 Kanzi Studio 中创建自定义消息:

  1. 素材库 (Library) 中,按下 Alt 并右键点击属性类型 (Property Types) 并选择 属性类型 (Property Type)

    属性类型编辑器 (Property Type Editor) 即会打开。
  2. 属性类型编辑器 (Property Type Editor) 中设置:
  3. 点击保存 (Save)
    您现在可以在应用程序中使用自定义消息。

请参阅设置触发器消息的处理

另请参阅

使用输入操纵器

触发器

使用触发器